Ajax ব্যবহার করে User Authentication প্রক্রিয়া তৈরি করা ওয়েব অ্যাপ্লিকেশনগুলোর জন্য একটি গুরুত্বপূর্ণ এবং কার্যকরী পদ্ধতি, যা ব্যবহারকারীর লগইন, রেজিস্ট্রেশন এবং লগআউট প্রক্রিয়া আরও ইন্টারেক্টিভ এবং সিকিউর করে তোলে। Ajax এর মাধ্যমে পেজ রিফ্রেশ ছাড়াই সার্ভারের সাথে ইন্টারঅ্যাক্ট করা যায়, যা একটি স্মুথ এবং রেসপন্সিভ ইউজার এক্সপেরিয়েন্স প্রদান করে।
এই উদাহরণে, আমরা একটি সিম্পল লগইন প্রক্রিয়া তৈরি করবো, যেখানে Ajax ব্যবহার করে ব্যবহারকারীর ইনপুট সার্ভারে পাঠানো হবে, এবং সার্ভার থেকে প্রাপ্ত রেসপন্স অনুযায়ী ডায়নামিক্যালি ফিডব্যাক দেখানো হবে।
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ajax User Authentication Example</title>
<style>
/* ফর্ম স্টাইল */
form {
max-width: 300px;
margin: auto;
padding: 20px;
border: 1px solid #ddd;
border-radius: 5px;
}
input, button {
width: 100%;
padding: 10px;
margin: 10px 0;
}
#message {
color: red;
text-align: center;
}
</style>
</head>
<body>
<h1 style="text-align: center;">Login</h1>
<form id="loginForm">
<input type="text" id="username" name="username" placeholder="Username" required>
<input type="password" id="password" name="password" placeholder="Password" required>
<button type="button" onclick="loginUser()">Login</button>
</form>
<div id="message"></div>
<script>
// User Login ফাংশন
function loginUser() {
var username = document.getElementById('username').value;
var password = document.getElementById('password').value;
var xhr = new XMLHttpRequest();
xhr.open("POST", "authenticate.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
var response = JSON.parse(xhr.responseText);
if (response.success) {
displayMessage("Login successful!", false);
// Redirect বা অন্য অ্যাকশন নেওয়া যেতে পারে
window.location.href = "dashboard.html";
} else {
displayMessage(response.message, true);
}
} else {
displayMessage("An error occurred while logging in. Please try again.", true);
}
}
};
xhr.onerror = function() {
displayMessage("Network error occurred. Please check your connection.", true);
};
var params = "username=" + encodeURIComponent(username) + "&password=" + encodeURIComponent(password);
xhr.send(params);
}
// মেসেজ ডিসপ্লে করার ফাংশন
function displayMessage(message, isError = true) {
var messageDiv = document.getElementById('message');
messageDiv.style.color = isError ? "red" : "green";
messageDiv.textContent = message;
}
</script>
</body>
</html>
<?php
// Sample database connection setup (Replace with your actual DB credentials)
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "user_db";
$conn = new mysqli($servername, $username, $password, $dbname);
// কানেকশন চেক করা
if ($conn->connect_error) {
http_response_code(500);
echo json_encode(["success" => false, "message" => "Database connection failed."]);
exit();
}
// ইনপুট প্যারামিটার সংগ্রহ করা
$username = $_POST['username'];
$password = $_POST['password'];
// SQL কুয়েরি এবং ইউজার চেক করা
$sql = "SELECT * FROM users WHERE username = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $username);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows === 1) {
$user = $result->fetch_assoc();
// পাসওয়ার্ড যাচাই করা
if (password_verify($password, $user['password'])) {
// লগইন সফল হলে
echo json_encode(["success" => true]);
} else {
// ভুল পাসওয়ার্ড
echo json_encode(["success" => false, "message" => "Invalid password."]);
}
} else {
// ইউজার পাওয়া যায়নি
echo json_encode(["success" => false, "message" => "User not found."]);
}
// কানেকশন বন্ধ করা
$stmt->close();
$conn->close();
?>
HTML এবং JavaScript (loginUser):
username
এবং password
ইনপুট গ্রহণ করা হয়। ব্যবহারকারী যখন "Login" বোতামে ক্লিক করে, তখন loginUser()
ফাংশন কল হয়।POST
মেথডের মাধ্যমে authenticate.php
ফাইলে পাঠানো হয়, যেখানে ইউজার ইনপুট প্যারামিটার হিসেবে অন্তর্ভুক্ত করা হয়।dashboard.html
পেজে রিডিরেক্ট করা হয়। অন্যথায়, একটি ত্রুটি মেসেজ দেখানো হয়।PHP (authenticate.php):
{ "success": true }
পাঠানো হয়।{ "success": false, "message": "..." }
পাঠানো হয়।password_hash()
এবং password_verify()
ফাংশন ব্যবহার করা হয়। এটি ইউজারের তথ্য সুরক্ষিত রাখতে সহায়তা করে।